/*
 * ﻿Empresa desarrolladora: Fujitsu Technology Solutions S.A. - http://ts.fujitsu.com Felipe Munoz Castillo - 29/07/2013
 *
 * Autor: Junta de Andalucía
 * Derechos de explotación propiedad de la Junta de Andalucía.
 *
 * Éste programa es software libre: usted tiene derecho a redistribuirlo y/o modificarlo bajo los términos de la Licencia EUPL European Public License publicada por el organismo IDABC de la Comisión Europea, en su versión 1.0. o posteriores.
 *
 * Éste programa se distribuye de buena fe, pero SIN NINGUNA GARANTÍA, incluso sin las presuntas garantías implícitas de USABILIDAD o ADECUACIÓN A PROPÓSITO CONCRETO. Para mas información consulte la Licencia EUPL European Public License.
 *
 * Usted recibe una copia de la Licencia EUPL European Public License junto con este programa, si por algún motivo no le es posible visualizarla, puede consultarla en la siguiente URL: http://ec.europa.eu/idabc/servlets/Docb4f4.pdf?id=31980
 *
 * You should have received a copy of the EUPL European Public License along with this program. If not, see
 * http://ec.europa.eu/idabc/servlets/Docbb6d.pdf?id=31979
 *
 * Vous devez avoir reçu une copie de la EUPL European Public License avec ce programme. Si non, voir http://ec.europa.eu/idabc/servlets/Doc5a41.pdf?id=31983
 *
 * Sie erhalten eine Kopie der europäischen EUPL Public License zusammen mit diesem Programm. Wenn nicht, finden Sie da http://ec.europa.eu/idabc/servlets/Doc9dbe.pdf?id=31977
 */
// <![CDATA[

// guarda que nos indica si se ha lanzado ya, para no lanzarlo 2 veces
var inicializadoDelete = false;


/**
 * Elimina los custom_fields que están condicionados y no tendrían porque verse debido
 * al valor que tienen sus campos condicionantes.
 */
function delete_fields_depedents() {

	if (!inicializadoDelete) {
		// para cada elemento condicionante guardamos su texto
		var nommesToDelete = []
		var field = null;
		for (field in customFieldsToDeleteMap) {
			nommesToDelete.push(
				customFieldsToDeleteMap[field].issue_custom_field.name);
		}

		var nommesToShow = []
		for (field in customFieldsToShowMap) {
			nommesToShow.push(
				customFieldsToShowMap[field].issue_custom_field.name);	
		}

		// Ponemos la parte de show
		$(".attributes").append('<tr id = "ticket_show_customfield_td_hr"><td colspan="4"><hr></hr></td></tr>');
		
		var columnas = [];
	 	// buscampos todos los campos personalizables presentes en el listado anterior para borrarorlos
	 	// junto a su elemento contiguo
		$("table.attributes > tbody  > tr").each (function() {
			$(this).children('th').each (function() {
				var currentText = $(this).text();
				if (currentText != null && currentText.length > 0) {
					currentText=currentText.substring(0, currentText.length - 1);
					if (nommesToDelete.indexOf(currentText) >= 0) {
						$(this).next().remove();
						$(this).remove();
					} else if (nommesToShow.indexOf(currentText) >= 0) {
						columnas.push($('<th>'+$(this).text()+'</th><td>'+$(this).next().text()+'</td>'));
						$(this).next().remove();
						$(this).remove();
					}
				}
			})
		})	

		// vamos a coger todas las columnas
		// por cada dos las metemos en una fila detrás de la última fila
		// despues de dos columnas, la última fila pasa a ser la fila actual
		if (columnas.length > 0) {

			var nuevaFila = null;
			var ultimaFila = $("#ticket_show_customfield_td_hr");
			
			for (columna in columnas) {
				if (columna%2 == 0) {
					nuevaFila = $('<tr></tr>');
					ultimaFila.after(nuevaFila);
					ultimaFila = nuevaFila;
				}
				nuevaFila.append(columnas[columna]);
			}	
		}

		// borramos las filas que se han quedado sin hijos
		$("table.attributes > tbody  > tr").each (
			function(){

			    var tr = $(this);
			    var tdNumber = tr.find('td').length;
			    var counter = 0;

			    tr.find('td').each(function () {
			        if ( $(this).html() == '' ) counter++;
			    });

			    if ( counter == tdNumber ) tr.remove();
		});

		// subimos la bandera			
		inicializadoDelete = true;
	}
}

// se encarga de que se llame el método delete_fields_depedents cuando se carga la página.
// hay dos posibilidades en función de los que acepte el navegador,
// como puede darse las dos posibilidades, usamos una bandera para saber si ya 
// se ha lanzado
$( document ).ready(function() {
    delete_fields_depedents();
});

$( window ).load(function() {
    delete_fields_depedents();
});


//]]>